package com.ps;

/**
 * @author: Jie Wang
 * @date: 2021/3/5 15:34
 * 选择排序:每轮循环找到 最小值的位置 最大值的位置 然后最小值与第一个位置的值进行交换，最大值与最后一个位置的值进行交换
 */
public class SingletonSortYouHua01 {

    public static void main(String[] args) {
        int[] arr = {6, 3, 5, 1, 9, 2, 4, 7, 8};
        System.out.println("初始");
        print(arr);
        for (int j = 0; j < (arr.length - 1) / 2; j++) {
            int minPos = j;
            int maxPos = arr.length - 1 - j;
            for (int i = j + 1; i < arr.length; i++) {
                if (arr[i] < arr[minPos]) minPos = i;
                if (arr[arr.length - 1 - i] > arr[maxPos]) maxPos = arr.length - 1 - i;
            }
            System.out.println("minPos:" + minPos);
            System.out.println("maxPos:" + maxPos);
            swap(arr, arr.length - 1 - j, maxPos);
            swap(arr, minPos, j);
            print(arr);
        }
    }

    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    private static void print(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}
